<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>函数声明和函数表达式</title>
</head>

<body>
  <script>
    // 函数声明
    console.log(typeof declaration); //function
    // console.log(declaration());
    declaration()//declaration
    function declaration() {
      console.log("declaration")
    }
    // 函数表达式
    console.log(typeof express);//undefined
    express()//报错
    var express = function () {
      console.log("express")
    }
 
    // 出现以上差异的原因是：用函数声明创建的函数可以在函数解析后调用（解析时进行等逻辑处理）；而用函数表达式创建的函数是在运行时进行赋值，且要等到表达式赋值完成后才能调用。其本质原因体现在这两种类型在Javascript function hoisting(函数提升）和运行时机（解析时/运行时）上的差异。

  </script>
</body>

</html>